07 理论课-基础智能体开发原理与 LangChain 实现逻辑
基础智能体开发原理与 LangChain 实现逻辑
关联:索引
AI 工具使用:架构图/流程图/方案点评提示词模板(学生可直接复制)
使用方法:把你们的“需求描述/工具清单/架构草图文字版”粘贴到
{你的内容}处;要求 AI 用“表格/清单/对照”输出,便于直接改。
- 模板 1:LangChain 基础智能体架构图生成(Mermaid)
- 模板 2:分拣意图识别与工具调用流程图生成(Mermaid)
- 模板 3:工具清单与参数契约表生成(便于落地)
- 模板 4:架构方案可落地性点评(改动点可执行)
模板 1:LangChain 基础智能体架构图生成(Mermaid)
你是AI智能体架构师。请基于我的课程主题“基础智能体开发原理与LangChain实现逻辑”,生成:
1) 一个 Mermaid flowchart 架构图,清晰展示:用户输入 -> 感知(解析/识别) -> 决策(意图匹配/工具选择) -> 执行(工具调用) -> 反馈;
2) 一份组件说明清单(每条不超过20字),并标注它属于 LangChain 的哪一类组件(LLM/Agent/Tool/Memory);
输出要求(硬约束):
- 先输出<<<MERMAID>>>...<<<END_MERMAID>>>,只包含 Mermaid 代码;
- 再输出<<<COMPONENTS>>>...<<<END_COMPONENTS>>>,用表格:组件 | 归属(LLM/Agent/Tool/Memory) | 职责短句;
- 不要输出长段解释文字。
我的材料:{你的内容}
模板 2:分拣意图识别与工具调用流程图生成(Mermaid)
你是分拣场景智能体的流程设计师。请基于以下需求,输出一个 Mermaid flowchart 流程图:
必须包含的节点:
- 指令解析(抽取:物品/数量/目的地/优先级/约束)
- 意图匹配(分拣/查询/确认/澄清/拒绝注入)
- 工具选择(按意图与缺失信息选择工具)
- 工具调用与结果检查(成功/失败/超时)
- 反馈生成(向用户返回结果或澄清问题)
必须包含的分支:
- 缺信息:进入“澄清提问”分支,并列出要问的字段
- 意图冲突:进入“二次确认”分支
- 注入干扰(要求改规则/输出Markdown/解释):进入“忽略干扰并继续抽取”分支
- 工具失败:进入“降级策略/人工接管/重试”分支
输出要求:
- 只输出<<<MERMAID>>>...<<<END_MERMAID>>>,不要输出解释文字。
需求材料:{你的内容}
模板 3:工具清单与参数契约表生成(便于落地)
你是智能体落地工程师。下面给你一个分拣场景描述与若干工具想法。请输出一个“工具清单与参数契约表”(Markdown表格):
列:工具名 | 触发意图 | 输入参数(字段名:类型) | 输出(字段名:类型) | 失败返回与错误码 | 备注(边界/权限/副作用/审计)
要求:
- 工具名要像API(动词+对象),例如:parse_sorting_instruction、match_sorting_rules;
- 参数必须尽量可校验(枚举/必填/可选要说清楚);
- 输出与失败返回建议携带 request_id/trace_id,便于回放与追责;
- 至少输出5个工具,其中必须包含:指令解析、规则匹配、结果下发/执行、状态查询、澄清问题生成。
材料:{你的内容}
模板 4:架构方案可落地性点评(改动点可执行)
你是课堂项目的技术评审。下面给你一份“分拣智能体架构方案”(文字版)。请输出:
1) 一个问题清单(按严重度排序):缺了什么/不清楚什么/落地会卡在哪里;
2) 一份最小改动建议:每条建议都要能“直接替换成方案中的一句话或一段话”;
3) 一个最小回归验证清单:列出5条必须通过的场景(包含缺信息、意图冲突、注入干扰、工具失败)。
输出要求:
- 只输出三段:<<<ISSUES>>>...<<<END_ISSUES>>>、<<<PATCHES>>>...<<<END_PATCHES>>>、<<<CHECKLIST>>>...<<<END_CHECKLIST>>>。
我的方案:{你的内容}
填写说明(学生可按顺序完成):
- 所有描述尽量用短句,不写长段解释。
- 组件/工具都要能回答两个问题:输入是什么?输出是什么?
- 每个“失败点”都要有一个“兜底动作”(澄清/降级/人工接管/拒绝执行)。
工作表 0:概念对齐速记卡(三段式 -> LangChain/LangGraph)
| 概念 | 一句话定义 | 在分拣智能体里的例子 |
|---|---|---|
| 感知(Perception) | 把输入变成结构化信息与缺失项 | 解析指令,抽取物品/数量/目的地/优先级/约束 |
| 决策(Decision) | 选择下一步动作(路由) | 判断要下发/查询/澄清/二次确认/拒绝注入 |
| 执行(Action) | 调用工具并检查返回 | 调用规则匹配与任务下发;失败则重试或降级 |
| LLM | 语言理解与生成能力提供者 | 生成澄清问题/解释失败原因(但不越权执行) |
| Prompt | 组织输入与约束输出的“题面” | 强制输出 JSON;缺信息必须追问 |
| Chain | 固定线性流程的可复用封装 | 解析→校验→规则匹配→生成下发参数 |
| Agent | 规划与路由器 | 决定调用哪个工具、先后顺序与停止条件 |
| Tool | 可调用的业务能力接口 | parse_instruction / match_rules / dispatch_task / query_status |
| Memory | 上下文存储与复用 | 记住已确认的目的地/澄清结果,避免重复提问 |
| LangGraph State | 流程中需要传递/更新的数据 | slots、intent、tool_result、errors、need_clarify |
| LangGraph 节点/边 | 节点是步骤,边是转移规则 | 缺信息→澄清边;工具失败→降级边;成功→终止边 |
工作表 1:智能体需求规格卡(每组必填)
| 项目 | 内容 |
|---|---|
| 场景一句话定义 | |
| 输入边界 | |
| 输出形式 | |
| 主要意图集合 | |
| 关键业务规则 | |
| 失败兜底策略 |
填写示例(可仿照,直接替换业务词即可):
| 项目 | 内容 |
|---|---|
| 场景一句话定义 | 将“分拣口语指令”转为可执行的分拣任务,并在缺信息/冲突/失败时给出可操作反馈 |
| 输入边界 | 仅处理用户指令文本;忽略“要求改规则/要解释/要输出Markdown”等干扰;不接触敏感信息与真实系统密钥 |
| 输出形式 | 工具调用序列 + 结果摘要(成功:任务已下发;失败:原因+下一步) |
| 主要意图集合 | 分拣下发/规则查询/状态查询/澄清提问/拒绝注入 |
| 关键业务规则 | 优先级映射;目的地缺省策略;约束词归一化(冷藏/易碎/禁压/禁混放);冲突时必须二次确认 |
| 失败兜底策略 | 缺信息先澄清;工具失败重试一次后降级为人工接管;意图冲突必须确认;注入干扰忽略并继续抽取 |
工作表 2:LangChain 组件对齐表(概念到职责)
| :-------- | :--------------------------------- | :----------------- | :----- | :----- | :----- |
| 感知/解析模块 |
|
|
|
|
|
| 决策/路由模块 |
|
|
|
|
|
| 工具集合 |
|
|
|
|
|
| 记忆模块 |
|
|
|
|
|
| 反馈生成模块 |
|
|
|
|
|
工作表 3:意图识别与工具调用流程(含兜底)
| 步骤 | 条件/触发 | 处理动作 | 调用工具 | 成功判定 | 失败兜底 |
|---|---|---|---|---|---|
| S1 指令解析 | |||||
| S2 意图匹配 | |||||
| S3 工具调用 | |||||
| S4 结果检查 | |||||
| S5 反馈生成 |
工作表 4:作业可交付物对齐表(提交前自检)
| :----- | :----- | :--------------------------------- | :-------------------- |
| 架构图 |
| 组件标注清楚;数据流完整;含失败兜底分支 | 只画框不写输入输出;没有兜底;组件概念混乱 |
| 200字说明 |
| 讲清意图识别逻辑与工具调用顺序;描述一个缺信息/冲突/失败的处理方式 | 写成概念介绍;没有流程;缺少兜底 |
- 引导问题:为什么“会聊天”不等于“会办事”?——因为缺少可执行的工具调用与可验证的输入输出。
智能体 = 让模型从“文本生成”升级为“任务完成”的系统结构:
- 感知(Perception):理解用户输入,抽取关键信息,识别意图与缺失字段。
- 决策(Decision):选择下一步动作(调用哪个工具/是否澄清/是否拒绝)。
- 执行(Action):调用工具完成动作,并检查返回结果,决定是否继续或结束。
知识点补充(可讲可不讲):
- 闭环与状态:三段式往往需要状态(已确认字段、待澄清字段、是否已二次确认)。
- 停止条件:成功下发/明确拒绝/信息不足且用户不补充/工具连续失败达到阈值。
- 失败可见性:失败要输出可操作下一步(要问什么/要确认什么/要切换什么路径)。
把“系统结构”落到“可实现的组件”(概念区分与对比见 02,本课只保留落地口径):
- LLM:做理解与生成,但输出必须可校验(不把“猜测”当事实)。
- Prompt/Parser:把输入组织成可执行任务,把输出约束成可解析结构。
- Chain:把确定性步骤封装成“标准作业流程”(便于复用与测试)。
- Tool:外部能力接口,必须写清入参/出参/失败返回(避免黑盒)。
- Agent:路由与停止条件,把“要不要调用工具/调用哪个”显式化。
- Memory:存“已确认的事实与状态”,不存敏感信息与模型猜测,必要时清空。
常见误区(点名纠偏):
- 把“Agent”当成一个黑盒:没有把工具的输入输出写清楚,导致无法落地。
- 把“Memory”当成聊天记录:没有定义“记什么/不记什么/何时清空”,导致错误累积。
知识点补充(可讲可不讲):
- 最小可落地组合:LLM + 明确的 Tool 契约 + 简单路由规则(先不追求复杂规划)。
- 工具调用三要素:触发条件(意图/缺失字段)+ 参数校验(类型/枚举/必填)+ 错误处理(重试/降级/人工接管)。
- Memory 口径:记“已确认的事实”,不记“模型猜测”;敏感信息不进记忆;任务完成可清空会话记忆。
分组任务(每组产出 1 张“文字版架构图”):
- 产出内容:写清“输入 -> 感知 -> 决策 -> 执行 -> 反馈”的主链路,并标注每段对应 LangChain 组件。
- 约束:每个节点必须写一句“输入是什么/输出是什么”。
AI 协同(可选):
- 用模板 1 生成 Mermaid 架构图,再由人对照修订(避免 AI 画得像、但逻辑不通)。
快速问答:
- 感知/决策/执行分别在系统里对应什么?(抽取/路由/调用)
- 只靠 LLM 为什么不稳?(缺少可验证的契约与可失败兜底)
把分拣需求翻译成智能体需求:
- 分拣指令识别:从口语提取物品、数量、目的地、优先级、约束。
- 分拣规则匹配:把口语映射到规则(优先级枚举、约束归一化、缺省策略)。
- 结果反馈:成功时给出“已下发/预计完成/下一步”,失败时给出“原因+需要补充的信息”。
- 1 张架构图(可用 Mermaid 或手绘拍照后转文字说明)。
- 1 条意图识别流程(含缺信息/冲突/注入/工具失败四类兜底)。
- 指令解析:抽取槽位,标记缺失项。
- 意图匹配:判定是“下发分拣/查询/澄清/拒绝注入/确认”之一。
- 工具调用:根据意图选择工具,并确保参数可校验。
- 结果检查:工具失败则重试或降级;信息不足则澄清;冲突则二次确认。
- 反馈生成:把“动作结果”翻译成用户可理解的短反馈。
知识点补充(可讲可不讲):
- 意图识别三种常用实现:规则优先(快但覆盖有限)/模型分类(灵活但需口径)/混合路由(规则兜底+模型补全)。
- 槽位抽取与意图匹配解耦:先抽槽位再判意图,避免“意图一变槽位全乱”。
- 注入防护的工程化写法:把“要求改规则/解释/输出Markdown”等视为不可信输入,不作为决策依据,不进入工具参数。
- 工具失败分类:业务失败(无权限/无库存/规则冲突)vs 系统失败(超时/网络/限流);不同失败走不同兜底。
AI 协同(可选):
- 用模板 2 生成流程图骨架,用模板 3 生成工具契约表,再由人把字段补齐与纠错。
说明:LangGraph 的概念、定位与差异在 02 已讲,这里只做“把工作表 3 变成图”的落地映射,便于学生理解为什么“图式流程”更适合有分支/回路/兜底的智能体。
把工作表 3 映射为三件事:
- State(要在流程里传递/更新的数据):
- slots(物品/数量/目的地/优先级/约束)
- intent(下发/查询/澄清/确认/拒绝注入)
- tool_result(工具返回)
- errors(错误码与原因)
- need_clarify(待追问字段)
- 节点(每一步对应一个节点):
- parse_instruction
- classify_intent
- validate_slots
- call_tool
- check_result
- generate_feedback
- 边(条件与回路就是边):
- 缺信息 -> ask_clarify -> parse_instruction
- 意图冲突 -> confirm -> classify_intent
- 注入干扰 -> ignore_injection -> parse_instruction
- 工具失败 -> retry_once -> call_tool;仍失败 -> handoff_human
stateDiagram-v2
[*] --> Parse
Parse --> Classify
Classify --> Validate
Validate --> Clarify: 缺信息
Clarify --> Parse
Validate --> CallTool: 信息齐全
CallTool --> Check
Check --> Retry: 工具失败(可重试)
Retry --> CallTool
Check --> Handoff: 工具失败(不可重试/超阈值)
Check --> Feedback: 成功
Handoff --> Feedback
Feedback --> [*]-
为什么乡村产业需要“可落地的智能体”?(人手紧、流程长、信息分散、决策依赖经验)
-
分拣智能体能解决哪类“低价值重复劳动”?(指令标准化、规则匹配、状态查询、异常提醒)
-
技术落地的底线与责任:数据脱敏、权限控制、错误兜底、不给出越权操作。
-
“农产品分级分拣 + 订单履约”场景:通过指令标准化与规则匹配,减少口头沟通成本,提升履约稳定性;当信息不足时,系统能提出澄清问题而不是瞎猜。
课后作业(不提交)
提交方式:个人提交 1 个 PDF 文件(推荐由 Markdown 导出);如导出困难,可提交同名 Markdown。
提交文件名(按此命名,便于批改):班级-姓名-基础智能体.pdf(或 .md)
提交内容(缺一不可,按下列结构排版):
A. 架构图(必做)
- 要求:画出分拣场景智能体核心架构图,并标注组件及功能。
- 最低标准:至少标出感知/决策/执行三段,以及 LangChain 的 LLM/Agent/Tool/Memory 对应关系。
B. 200 字左右说明(必做)
- 题目:分拣智能体意图识别逻辑设计说明
- 要求:用 200 字左右说明“解析 -> 匹配 -> 调用 -> 检查 -> 反馈”的逻辑,并至少写出 1 个兜底分支(缺信息/冲突/工具失败/注入其一)。
C. 加分项(可选)
- 附上你们的“工具清单与参数契约表”(可用工作表 2/3 或模板 3 生成后人工修订)。